<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <script>
        // 对象的动态特性
        // 1. 点语法
        //字面量创建对象
        var obj  = {
        }

        // 创建完对象之后 还能再添加属性和方法， 称之为 动态添加
        obj.name = 'jack'; //动态添加属性
        // 动态添加方法 
        obj.sayHi = function () {
            console.log('say hi');
        }

        console.log(obj.name); // 访问对象属性
        obj.sayHi() // 调用对象方法
    
        obj.name = 'mr马';
        console.log(obj.name); // 'mr马'
        // 结论： 如果对象中存在 点访问的属性 那么就可以修改属性值， 如果对象中不存在 该属性 就可会添加该属性并设置值
    
        //删除属性
        delete obj.name;
        console.log(obj.name); //undefined
        

        // 2.数组关联法（[] 方法） 新增修改删除 属性
        var obj2 = new Object(); // 内置对象构造函数

        //  动态添加 属性
        obj2['name'] = 'andy';
        console.log(obj2['name']); // 访问属性 andy
        
        // 动态添加方法
        obj2['sayHi'] = function () {
            console.log('obj2 say hi');
        }
        obj2['sayHi'](); // 调用对象方法

        // 修改属性
        obj2['name'] = '老周'
        console.log(obj2['name']); // 访问属性 老周
    
        // 删除属性
        delete obj2['name'];
        console.log(obj2['name']); //删除后再访问 属性会得到  undefined
        
    </script>
    
</body>
</html>